Encryption and tokenization architectures

ABSTRACT

Various embodiments of the present invention are directed to methods, systems and computer program products for conducting an online transaction on a website involving sensitive information. Such embodiments provide methods, systems and computer program products to: (a) register at least one entity with a gate keeper module, the registering comprising associating the entity with a subscription level; (b) associate a sub-string of a character string with a unique token so that a direct link does not exist between the unique token and the character string; and (c) during processing of the online transaction: (i) using the unique token for intermediate steps during the processing of the online transaction; and (ii) only accessing the character string in storage memory to complete the online transaction after receiving a request from at least one registered entity associated with a subscription level associated with a privilege to receive the requested sensitive information.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.12/203,415, filed Sep. 3, 2008, which claims priority to U.S.Provisional Application Ser. No. 60/982,128, filed Oct. 23, 2007, thecontents of which are incorporated herein by reference in theirentireties.

FIELD OF THE INVENTION

Various embodiments of the present invention relate generally to methodsand systems for encryption and tokenization architectures for sensitivedata such as credit card number.

BACKGROUND OF THE INVENTION

In today's world of information storage, there are many circumstanceswherein information must be securely stored and used. For example, manymerchants and service providers accept credit cards for the payment ofgoods and services they sell. In order to accept a credit card forpayment, a merchant or service provider will record a purchaser's creditcard number along with other information, and submit the number andinformation for payment to the issuer of the credit card, such as Visa.In many cases this information is encrypted due to the sensitivity ofthe information and the threat of a third-party illegally obtaining theinformation, e.g., a hacker breaking into a merchant's computer systemand illegally copying this information.

In addition, major credit card companies have developed guidelines tohelp merchant and service providers prevent credit card fraud, hacking,and various other security issues. These guidelines are known as thePayment Card Industry Data Security Standard (PCI DSS). Therefore, anymerchant or service provider processing, storing, or transmitting creditcard numbers must adhere to these standards or risk losing the abilityto process credit card payments. These guidelines involve twelverequirements for compliance. For example, the guidelines require thatany cardholder data stored must be protected. In addition, anytransmission of cardholder data across open, public networks must beencrypted.

Encryption can be a complex process that involves encrypting anddecrypting the cardholder data through the use of tools such asasymmetric-keys. For example, in public-key cryptography the encryptionprocess involves using two keys, i.e., a public-key and a private key.The public key may be freely distributed, while its paired private keyis kept secret. Typically, the public key is used for encrypting thedata while the private key is used for decrypting the data. Therefore,these keys must be maintained and securely stored. Thus, every time amerchant or service provider transmits cardholder data, they mustperform this encryption and decryption process. This can lead toinefficient processing of credit card payments.

As a result, a need exists in the art to better utilize sensitiveinformation, yet minimize the transferring of such information. Such animprovement will also lead to better efficiency because the need forencrypting and decrypting will be reduced to use such information.

BRIEF SUMMARY OF THE INVENTION

Various embodiments of the present invention are directed to systems andmethods for transmitting a character string. In addition, variousembodiments are directed to systems and methods for transmitting aunique token associated with a character string.

In particular, various embodiments provide a method of transmitting acharacter string comprising the step of adapting one or more processorsfor executing a gatekeeper module. The gatekeeper module in theseembodiments is adapted for: (a) storing the character string in one ormore storage devices; (b) associating a unique token with the characterstring; and (c) associating a sub-string of the character string withthe unique token to identify that the unique token is associated withthe character string without revealing the character string. Inaddition, in response to receiving a request for the character string,the gatekeeper module is further adapted for accessing the characterstring from the one or more storage devices by using the unique tokenassociated with the character string and transmitting the characterstring.

In various embodiments, the gatekeeper module is further adapted forverifying that a computer device or a user making the request for thecharacter string is authorized to receive the character string. Inaddition, in various embodiments, the character string is stored asencrypted data and/or stored as a record in a database. Furthermore, invarious embodiments, the character string is a credit card number andthe associated sub-string used to identify the credit card number is thelast four digits of the credit card number.

As another example, various embodiments of the present invention providea method for transmitting a unique token associated with a characterstring comprising the step of adapting one or more processors forexecuting a gatekeeper module. In these embodiments, the gatekeepermodule is adapted for: (a) storing the character string in one or morestorage devices; (b) associating the unique token with the characterstring; and (c) associating a sub-string of the character string withthe unique token to identify that the unique token is associated withthe character string without revealing the character string. Inaddition, in response to receiving a request for the unique tokenassociated with the character string, the gatekeeper module is furtheradapted for accessing the unique token from the one or more storagedevices using the character string and transmitting the unique tokenassociated with the character string. In various embodiments, thegatekeeper module is also adapted for verifying that a computer deviceor a user making the request for the unique token is authorized toreceive the unique token.

Furthermore, various embodiments provide a system for transmitting acharacter string comprising one or more processors and one or morestorage devices coupled to the processors and adapted for storing thecharacter string. The processors of these particular embodiments areadapted to execute a gatekeeper module to (a) store the character stringwithin the storage devices; (b) associate a unique token with thecharacter string; and (c) associate a sub-string of the character stringwith the unique token to identify that the unique token is associatedwith the character string without revealing the character string. Inaddition, in response to receiving a request for the character string,the processors are further adapted to execute the gatekeeper module toaccess the character string from the storage devices by using the uniquetoken associated with the character string and transmit the characterstring.

In various embodiments, the processors are also adapted to execute thegatekeeper module to verify that a computer device or a user making therequest for the character string is authorized to receive the characterstring. In addition, in various embodiments, the character string isstored as encrypted data and/or stored as a record in a database withinthe storage devices.

Other embodiments provide a system for transmitting a unique tokenassociated with a character string comprising one or more processors andone or more storage devices coupled to the processors and adapted forstoring the character string. The processors of these particularembodiments are adapted to execute a gatekeeper module to: (a) store thecharacter string within the storage devices; (b) associate a uniquetoken with the character string; and (c) associate a sub-string of thecharacter string with the unique token to identify that the unique tokenis associated with the character string without revealing the characterstring. In addition, in response to receiving a request for the uniquetoken, the processors are further adapted to execute the gatekeepermodule to access the unique token from the storage devices by using thecharacter string associated with the unique token and transmit theunique token. In various embodiments, the processors are also adapted toexecute the gatekeeper module to verify that a computer device or a usermaking the request for the unique token is authorized to receive theunique token.

In various embodiments, a method for conducting an online transaction ona website involving sensitive information is provided. In suchembodiments, the method comprises: (a) registering at least one entitywith a gate keeper module, the registering comprising associating the atleast one entity with a subscription level; (b) associating a sub-stringof a character string with a unique token so that a direct link does notexist between the unique token and the character string, the characterstring comprising the sensitive information and the sub-string beingconfigured to identify the character string without revealing thesensitive information; and (c) during processing of the onlinetransaction: (i) using the unique token for intermediate steps duringthe processing of the online transaction; and (ii) only accessing thecharacter string in storage memory using the unique token and thesub-string to retrieve the sensitive information and to complete theonline transaction using the information for the online transaction andthe sensitive information after receiving a request for the sensitiveinformation from at least one of the at least one registered entityassociated with a subscription level associated with a privilege toreceive the requested sensitive information.

In various embodiments, a system for conducting an online transaction ona website involving sensitive information is provided. In suchembodiments, the system comprises one or more processors; and one ormore storage devices coupled to the one or more processors and adaptedfor storing a character string. The one or more processors may execute agatekeeper module to: (a) register at least one entity with thegatekeeper module, the registering comprising associating the at leastone entity with a subscription level; (b) associate a unique token witha sub-string of a character string wherein a direct link does not existbetween the unique token and the character string, the character stringcomprising the sensitive information and the sub-string being configuredto identify the character string without revealing the sensitiveinformation; and (c) during processing of the online transaction: (i)use the unique token for intermediate steps during the processing of theonline transaction; and (ii) only access the character string in the oneor more storage devices using the unique token and the sub-string-toretrieve the sensitive information and to complete the onlinetransaction using the information for the online transaction and thesensitive information after receiving a request for the sensitiveinformation from at least one of the at least one registered entityassociated with a subscription level associated with a privilege toreceive the requested sensitive information.

In yet other embodiments, a computer program product for conducting anonline transaction on a website involving sensitive information, whereinthe computer program product comprises at least one non-transitorycomputer-readable storage medium having computer-readable program codeportions stored therein, is provided. In such embodiments, thecomputer-readable program code portions may comprise: (a) an executableportion configured to register at least one entity with the gatekeepermodule, the registering comprising associating the at least one entitywith a subscription level; (b) an executable portion configured toassociate a unique token with a sub-string of a character string whereina direct link does not exist between the unique token and the characterstring, the character string comprising the sensitive information andthe sub-string being configured to identify the character string withoutrevealing the sensitive information; and (c) during processing of theonline transaction: (i) an executable portion configured to use theunique token for intermediate steps during the processing of the onlinetransaction; and (ii) an executable portion configured to only accessthe character string in one or more storage devices using the uniquetoken and the sub-string-to retrieve the sensitive information and tocomplete the online transaction using the information for the onlinetransaction and the sensitive information after receiving a request forthe sensitive information from at least one of the at least oneregistered entity associated with a subscription level associated with aprivilege to receive the requested sensitive information.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

Having thus described the invention in general terms, reference will nowbe made to the accompanying drawings, which are not necessarily drawn toscale, and wherein:

FIG. 1 is a flowchart illustrating a process for transmitting acharacter string according to various embodiments of the invention.

FIG. 2 is a flowchart illustrating a process for transmitting a uniquetoken associated with a character string according to variousembodiments of the invention.

FIG. 3 is a schematic diagram illustrating a system architectureincluding a gatekeeper system according to various embodiments of theinvention.

FIG. 4 is a schematic diagram illustrating a system storing a gatekeepermodule according to various embodiments of the invention.

FIG. 5 is a flow diagram of a gatekeeper module transmitting a characterstring according various embodiments of the invention.

FIG. 6 is a flow diagram of a gatekeeper module transmitting a uniquetoken associated with a character string according to variousembodiments of the invention.

DETAILED DESCRIPTION OF THE INVENTION

The present invention will now be described more fully with reference tothe accompanying drawings, in which some, but not all embodiments of theinvention are shown. Indeed, this invention may be embodied in manydifferent forms and should not be construed as limited to theembodiments set forth herein. Rather, these embodiments are provided sothat this disclosure will satisfy applicable legal requirements. Likenumbers refer to like elements throughout.

As will be appreciated by one skilled in the art, the present inventionmay be embodied as a method, a data processing system, or a computerprogram product. Accordingly, the present invention may take the form ofan entirely hardware embodiment, an entirely software embodiment, or anembodiment combining software and hardware aspects. Furthermore, thepresent invention may take the form of a computer program product on acomputer-readable storage medium having computer-readable programinstructions (e.g., computer software) embodied in the storage medium.More particularly, the present invention may take the form ofweb-implemented computer software. Any suitable computer-readablestorage medium may be utilized including hard disks, CD-ROMs, DVD-ROMs,USB flash drives, optical storage devices, or magnetic storage devices.

The present invention is described below with reference to blockdiagrams and flowchart illustrations of methods, apparatuses (i.e.,systems) and computer program products according to an embodiment of theinvention. It will be understood that each block of the block diagramsand flowchart illustrations, and combinations of blocks in the blockdiagrams and flowchart illustrations, respectively, can be implementedby computer program instructions. These computer program instructionsmay be loaded onto a general purpose computer, special purpose computer,or other programmable data processing apparatus to produce a machine,such that the instructions which execute on the computer or otherprogrammable data processing apparatus create a means for implementingthe functions specified in the flowchart block or blocks.

These computer program instructions may also be stored in acomputer-readable memory that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablememory produce an article of manufacture including computer-readableinstructions for implementing the function specified in the flowchartblock or blocks. The computer program instructions may also be loadedonto a computer or other programmable data processing apparatus to causea series of operational steps to be performed on the computer or otherprogrammable apparatus to produce a computer-implemented process suchthat the instructions that execute on the computer or other programmableapparatus provide steps for implementing the functions specified in theflowchart block or blocks.

Accordingly, blocks of the block diagrams and flowchart illustrationssupport combinations of means for performing the specified functions,combinations of steps for performing the specified functions and programinstruction means for performing the specified functions. It will alsobe understood that each block of the block diagrams and flowchartillustrations, and combinations of blocks in the block diagrams andflowchart illustrations, can be implemented by special purposehardware-based computer systems that perform the specified functions orsteps, or combinations of special purpose hardware and computerinstructions.

Transmitting a Character String

Various embodiments of the present invention provide systems and methodsfor transmitting a character string. Such embodiments include providinga gatekeeper module that is executed on a computer to: (1) store acharacter string within one or more storage devices; (2) associate aunique token with the character string; (3) associate a sub-string ofthe character string with the unique token to identify that the uniquetoken is associated with the character string without revealing thecharacter string; and (4) in response to receiving a request for thecharacter string, access the character string from the one or morestorage devices by using the unique token associated with the characterstring, and transmit the character string to a computer device or a userrequesting the string.

FIG. 1 is an exemplary process for transmitting a character string 100according to various embodiments of the invention. The process comprisesthe step of adapting one or more processors (“processor”) for executinga gatekeeper module, shown as Step 101. These processors may be locatedin one or more computer systems and may be in communication via anetwork (e.g., a LAN network, wireless network, or the Internet).

Thus, the processor executes the gatekeeper module of variousembodiments to store the character string in one or more storagedevices. For example, the processor may execute the gatekeeper module tostore the character string in a database located on the storage devices.The processor may execute the gatekeeper module in other embodiments tostore the character string in a file located on a storage device.Furthermore, the processor may execute the gatekeeper module to storethe character string in other embodiments in a data warehouse, or sometype of program module located on storage devices.

In addition, various types of storage devices may be used according tovarious embodiments of the invention. For instance, the storage devicesmay be internal or external hard drives, storage disks, magnetic tape,USB flash drives, or some other type of storage devices as known bythose of ordinary skill in the art.

In many cases the character string represents sensitive information, andtherefore, the processor will execute the gatekeeper module to store thestring as encrypted data in various embodiments. For example, thecharacter string may be a customer credit card number that is receivedby a merchant or service provider from a customer purchasing a productor service by using a credit card. In this context, the merchant orservice provider records the credit card number along with otherinformation associated with the credit card and customer so that thecredit card information can be submitted to the issuer of the creditcard for payment.

Furthermore, the storing of credit card information has become even morepredominate in the advent of online shopping via the Internet. Forexample, a user will visit a retailer's web site via a browser locatedon the user's computer, browse the retailer's products, select one ormore products for purchase, and in many cases, proceed to a “checkout”webpage provided by the retailer's web site to complete the purchase.Once on the “checkout” webpage, the user provides credit cardinformation by typing in the information on the webpage to pay for theselected products. A server will execute a module associated with thewebpage to store the credit card information and complete the purchase.In addition, in many instances a user will visit the retailer's web sitemultiple times to shop again. As a result, the retailer may retain theuser's credit card information in one or more storage devices to helpfacilitate a quicker checkout for the user for subsequent purchases,e.g., the user's credit card information may be automatically populatedon the “checkout” webpage so that the user is not required to re-enterthe information for a subsequent purchase.

Other types of sensitive information may also be stored in the storagedevices as encrypted data. For example, many organizations store socialsecurity numbers for various reasons and will encrypt the socialsecurity numbers for security purposes. However, the credit card exampleis utilized throughout this document to illustrate the variousembodiments of the present invention. Thus, it should be understood thatthe credit card example is used for illustration purposes only and in noway should limit the specific kind of sensitive data that may be usedwith the claimed invention.

Returning to the example, in various embodiments, the processor executesthe gatekeeper module to receive a customer's credit card number,encrypt the number, and store the number in a database. In addition tothe credit card number, the gatekeeper module may store various otherinformation in the database, such as credit card expiration date, creditcard type, status of the credit card (e.g., active), parent system, andprofile flag. In various embodiments, the processor may execute thegatekeeper module to use various encryption techniques to encrypt thecredit card number and information. For example, the module may employasymmetric-key encryption to encrypt the credit card number.Asymmetric-key encryption involves the use of keys to encrypt or decryptthe information. A common type of asymmetric-key encryption is known aspublic-key encryption. This type of encryption involves the use of twodifferent keys, i.e., a public key and a private key. The public key isfreely distributed and is typically used for encryption, while theprivate key is kept secured and is typically used for decryption.

Lastly, the storage devices used to the store the character strings maybe provided as a centralized repository according to various embodimentsof the invention. Such a repository may be important in the context ofstoring sensitive information such as credit card numbers. For example,those managing the repository can implement corrective measures morequickly by having a centralized repository to store the credit cardnumbers in the case of a security breach. In addition, such a repositorycentralizes the protection of the sensitive information, and therefore,raises the quality of protection because implementing protective andcorrective measures is much simpler for a centralized repository asopposed to many repositories. Thus, a centralized repository reduces thescope of the information that must be protected, reduces securityefforts, and reduces the labor and overhead required to protect theinformation.

Furthermore, a centralized repository aids in the compliance withPayment Card Industry Data Security Standard (PCI DSS) guidelines usedin the context of credit card information. For example, the centralizedrepository assists in logging compliance with PCI DSS guidelines becausesuch logging deals with only one source of credit card information. Inaddition, it is easier to restrict access to the repository because itis easier to pre-define and manage a list of entities that may accessthe repository, as well as, track and monitor those entities that haveaccessed the repository. It is also easier to restrict physical accessto the credit card information because the centralized repository can behoused on one system, e.g., one server or bank of servers, and access tothis system can be restricted.

In various embodiments, the processor also executes the gatekeepermodule to associate a unique token with the character string. Returningto the example, the module stores the encrypted credit card number inthe database and assigns a unique token to the encrypted credit cardnumber.

The processor executes the gatekeeper module to create the unique tokenusing various processes. For example, in various embodiments, the modulecreates the unique token by calling a random number generator module.Such a module typically includes an algorithm that can automaticallycreate long runs, e.g., millions of numbers long, with good randomproperties. However, in many cases, the sequence created by thealgorithm will eventually repeat. Therefore, once the random numbergenerator module has provided a random number, the processor furtherexecutes the gatekeeper module to check the provided number against theexisting tokens to ensure the acquired random number is unique. If therandom number is unique, the processor executes the gatekeeper module toassociate the random number with the encrypted credit card number in thedatabase.

In other embodiments, the processor executes the gatekeeper module toemploy database primary keys used to distinguish records in a databasetable to provide unique tokens. For example, a record stored in thetable of a database may be made a unique record with respect to otherrecords stored in the same table by requiring that one or more fields ofthe record, alone or in combination, store a unique value from the sameone or more fields of other records stored in the table. This isreferred to as developing primary keys to one of ordinary skill in theart. In addition, many commercial database applications also provide afeature that will allow a field in a database table to be defined sothat a unique primary key is automatically generated and written intothe field for a new record stored in the table. Thus, in the example,this feature generates a unique primary key to store in a field of atable in the database when the processor executes the gatekeeper moduleto store the encrypted credit card number in the table. The module willthen use the generated primary key as the unique token associated withthe credit card number.

In various embodiments, the processor executes the gatekeeper module tostore the unique token in the same storage as the character string. Inother embodiments, the processor executes the gatekeeper module to storethe unique token in separate storage. Thus, in the example, theprocessor executes the gatekeeper module to store the unique token inthe same database as the encrypted credit card number or in a separatedatabase.

The decision as to whether to store the unique tokens in the samedatabase as the encrypted credit card numbers or in a separate databasemay be based on different considerations. For example, the processor mayexecute the gatekeeper module in various embodiments to store the uniquetokens separately from the encrypted information for security reasons.In other instances, the processor may execute the gatekeeper module tostore the unique tokens in the same database as the encryptedinformation to help centralize the information for management purposes.One of ordinary skill in the art can think of various other reasons tostore the tokens and the character strings in the same or separatestorage devices in light of this disclosure.

In addition, in various embodiments, the processor executes thegatekeeper module to associate the unique token with a sub-string of thecharacter string associated with the token to identify that the token isassociated with the character string without revealing the characterstring. In various embodiments, the processor executes the gatekeepermodule to store this sub-string along with its corresponding token. Inother embodiments, the processor executes the gatekeeper module to storethe sub-string and token in separate storage. Thus, there is nothingidentifiable in the token to link the token to the correspondingcharacter string directly. Instead, the token uses a formal protectedcross reference to link to the character string.

An example of such a sub-string is the last four digits of a credit cardnumber. Therefore, if a user visiting a retailer's web site proceeds tothe “checkout” webpage to purchase a product, the user can request tosee what credit cards the merchant has on file for the user, e.g., whatcredit card numbers are stored in the retailer's database. In variousembodiments, a server executes a module associated with the web page toquery the database and instead of processor returning the actual creditcard numbers to the module, the processor executes the gatekeeper moduleto return the tokens associated with the stored credit card numbersalong with the last four digits of each credit card number stored in thedatabase. The server then executes the module to display the last fourdigits of each credit card on the web site to the user. As a result, theuser is able to recognize each stored credit card number and choose thecredit card to which he or she wishes to charge the purchase.

The use of such a sub-string provides a significant advantage overprevious processes. This is because to show the user what credit cardnumbers are stored in the database in previous processes, a module wouldneed to be executed to query the database for the credit card numbers,encrypt the credit card numbers if the numbers were decrypted to bequeried from the database, send the numbers to the webpage fordisplaying, and decrypt the numbers to display them to the user. Thiscomplex process is required to be performed in this fashion to ensurethe security of the information from such threats as hackers, as wellas, to be in compliance with the PCI DSS guidelines.

However, by having the module display the sub-strings to identifyparticular credit card numbers instead of the actual credit card numberson the webpage, the user can view what credit card numbers are stored inthe database for him or her without the module having to perform thecomplex process to access and transmit the actual credit card numbers tothe webpage. As a result, the credit card numbers stay encrypted andsecured in the database. Thus, encryption and decryption activities areminimized and the flow of sensitive information is reduced.

Accordingly, in response to the gatekeeper module receiving a requestfor a character string, the processor executes the gatekeeper module toaccess the string from storage by using the unique token associated withthe character string. Therefore, returning to the example, once the userhas selected a particular credit card number to which he or she wishesto charge the purchase from the last four digits displayed on the“checkout” webpage, the module that is executed to facilitate thepurchase from the webpage sends a request for the specific credit cardnumber to the gatekeeper module. In response, the processor executes thegatekeeper module to access the actual credit card number by using theunique token associated with the requested credit card number. Forexample, the processor executes the gatekeeper module to query theactual credit card number from the repository by using the unique tokenas a search parameter of the query.

In various embodiments, various computer devices and users may submitthe request for the character string, and at various times. For example,once the user selects a particular credit card to which to charge thepurchase, a server executes the module to facilitate the purchase tosave the purchase to a database. A computer device may later batch thispurchase with other purchases and submit the purchases to a credit cardcompany for payment. In this case, the server executes the module tosave the unique token for the selected credit card along with thepurchase in the database and the device that executes the module toperform the batching is the device that requests the actual credit cardnumber by using the token. This also provides an advantage over previousprocesses because in a process that involves multiple transactions, anumber of computer devices executing the modules involved in thetransactions may only need a reference to the credit card number asopposed to the actual credit card number. In this case, these deviceswill use the token to process transactions unless there is a specificreason the device needs the actual credit card number, such assubmitting the purchase information to the credit card company forpayment.

In addition, the processor executes the gatekeeper module of variousembodiments to verify whether the device or the user requesting thecharacter string is authorized to receive the character string. Thus,the module provides formal access controls in various embodiments. Forexample, the gatekeeper module may include an application programminginterface (API) to regulate the interaction between independent computerdevices and individuals and the database storing the sensitiveinformation according to various embodiments of the invention.Specifically, a computer device or a user that makes a request to accessa character string must first register with the gatekeeper module.Therefore, in the case of the credit card example, a mechanism isimplemented to control who and what can access the credit card numbersin the database.

In various embodiments, the device or the user subscribes with thegatekeeper module to gain access to the information stored in thedatabase. As a result, the processor will execute the gatekeeper moduleto give various devices and users various levels of access. For example,the computer device executing the batching module discussed above thatbatches up the credit card charges and submits the charges to the creditcard company subscribes with the gatekeeper module to be able to requestthe credit card numbers. Another device that records and reports auser's transaction history may only need to retrieve the sub-stringsassociated with the tokens to display a user's transaction history, andtherefore, this device's subscription only provides access to thesub-strings. In turn, the processor may execute the gatekeeper module toprovide other subscription levels, such as privileges to access tokensonly, according to various other embodiments.

Thus, the device or the user will need to provide a token, a sub-string,or some other information and sufficient credentials that allow thedevice or the user to perform the type of access or manipulation of theinformation the device or the user wants to perform. In variousembodiments, the credentials may take many forms. For example, theprocessor may execute the gatekeeper module to provide the credentialsas a key to the device upon registration with the gatekeeper module. Inother embodiments, the processor may execute the gatekeeper module toprovide credentials by simply checking the name of the device or theuser against a record in a database table to determine whether thedevice or the user has privilege to perform the request. One of ordinaryskill in the art can think of numerous ways for the processor to executethe gatekeeper module to provide and check credentials for a device or auser to establish the device's or the user's level of access to theinformation in light of this disclosure.

In addition, the processor can execute the gatekeeper module to monitorthe retention of the character strings and associated information storedin the storage devices in various embodiments. Therefore, the processorcan execute the gatekeeper module to determine whether any of thesensitive information stored is out-dated and should be deleted orarchived from the database. As a result, this will minimize the amountof sensitive information stored in the storage devices and also minimizethe liability of storing such information.

Thus, returning to the example wherein the database is storing thecredit card numbers of users who have visited a retailer's web site topurchase goods from the retailer, the processor executes the gatekeepermodule to periodically check to determine whether any of the credit cardnumbers have expired or whether any of the credit card numbers have notbeen used within a set period of time, e.g., whether a certain period oftime has elapsed since the credit card number was last used to make apurchase. Therefore, if a credit card number has expired or has not beenused within the set period of time, the processor executes thegatekeeper module to delete the credit card number along with anycorresponding information from the database. In various embodiments, theprocessor may first execute the gatekeeper module to archive the creditcard number and corresponding information to an external storage medium,such as a disk or tap drive, before deleting the information.

The processor can execute the gatekeeper module to monitor the characterstrings through various techniques. In one embodiment, the gatekeepermodule may have a scheduling feature executed by the processor to checkeach record in the database at a certain time each day to determine ifany credit card numbers need to be purged from the database. Forexample, the processor executes the scheduling feature every morning atthree o'clock a.m. and filters out any records that need to be purgedfrom the database. In another embodiment, the processor simply executesthe gatekeeper module to check each credit card number stored for a userin response to the module receiving a request for a credit card numberassociated with the user to determine if any of the user's stored creditcard numbers are out of date. One of ordinary skill in the art canenvision several techniques that may be employed to ensure the out-datedcharacter strings and corresponding information are purged in light ofthis disclosure.

Finally, processor executes the gatekeeper module to transmit thecharacter string to the device or the user requesting the stringaccording to various embodiments of the invention. It should beunderstood that the term “transmit” does not necessarily mean thegatekeeper module sends the character string to the device or the user.For example, in various embodiments, the processor executes thegatekeeper module to grant the device or the user permission to accessthe character string in storage. Thus, the term “transmit” is used inthis disclosure to mean that the processor executes the gatekeepermodule to facilitate the device or the user obtaining the characterstring.

As previously discussed, the device or the user making the request canvary by embodiment. For example, the device may be a server executing aprogram module, a Graphical User Interface (GUI), or an external sourcesuch as a credit card company computer system. In addition, theprocessor may execute the gatekeeper module to transmit the characterstring in various forms. For example, processor may execute thegatekeeper module to return the character string in a digital formatsuch as in a data stream, a file, or an e-mail or to display thecharacter string on a computer monitor. The processor may also executethe gatekeeper module to encrypt or decrypt the character string, orsimply return the string as standard text. One of ordinary skill in theart is familiar with the numerous ways the character string can bereturned from the storage devices and stored or displayed in light ofthis disclosure.

Transmitting a Unique Token Associated With a Character String

In many instances, a device or a user may need to access a unique tokenassociated with a character string. For instance, a user may visit aretailer's web site and select a product to purchase. The moduleexecuted to facilitate the purchase on the web site forwards the user toa “checkout” webpage and instead of choosing an existing credit cardnumber stored in the retailer's database, the user enters a new creditcard number and completes the purchase. A server executes the module torecord the purchase transaction in a database so that the purchase maybe later submitted to the credit card company for payment. However, inthis case, the module is provided with the credit card number as opposedto a unique token associated with the credit card number. Therefore, theserver executes the module to obtain a unique token for the credit cardnumber prior to storing the purchase transaction in the database.

Accordingly, various embodiments of the present invention are directedto systems and methods for transmitting a unique token associated with acharacter string. Such embodiments include providing a gatekeeper modulethat is executed on a computer to: (1) store the character string withinone or more storage devices; (2) associate a unique token with thecharacter string; (3) associate a sub-string of the character stringwith the unique token to identify that the unique token is associatedwith the character string without revealing the character string; and(4) in response to receiving a request for the unique token associatedwith the character string, access the unique token from the one or morestorage devices by using the character string, and transmit the uniquetoken to a computer device or a user requesting the unique token.

As displayed in FIG. 2, an exemplary process for transmitting a uniquetoken associated with a character string 200 according to variousembodiments of the invention includes the step of adapting one or moreprocessors (“processor”) for executing a gatekeeper module, shown asStep 201. These processors may be located in one or more computersystems and may be in communication via a network (e.g., a LAN network,a wireless network, or the Internet).

The processor executes the gatekeeper module of various embodiments tostore the character string in one or more storage devices, as shown inStep 201. The processor executes the gatekeeper module to perform thisstep in the same manner as in the process for transmitting a characterstring 100. For example, the processor executes the gatekeeper module tostore the character string in a database, file, data warehouse, or sometype of program module according to various embodiments of theinvention. In addition, in various embodiments, the character string mayrepresent sensitive information, and therefore, the processor executesthe gatekeeper module to store the string as encrypted data. Lastly, theprocessor may execute the gatekeeper module to store the characterstring in a central repository according to various embodiments of theinvention.

The processor further executes the gatekeeper module to associate aunique token with the character string according to various embodiments.The processor executes the gatekeeper module to carry out this step in asimilar manner to the process for transmitting a character string 100discussed above. Thus, the processor executes the gatekeeper module togenerate a unique token through various processes such as executing arandom number generator module or utilizing the primary key associatedwith a record stored in a database for the character string.

In addition, in various embodiments, the processor executes thegatekeeper module to associate the unique token with a sub-string of thecharacter string associated with the token in order to identify that thetoken is associated with the character string without revealing thecharacter string in a manner similar to the process for transmitting acharacter string 100. An example of such a sub-string is the last fourdigits of a credit card number.

In various embodiments, the processor also executes the gatekeepermodule to access a unique token from storage by using the characterstring associated with the unique token in response to receiving arequest for the unique token according to various embodiments. Returningto the example, once the user has entered the credit card information onthe “checkout” webpage and completed the transaction, the processorexecutes the gatekeeper module to encrypt and save the credit cardnumber and related information to the database. In addition, theprocessor executes the gatekeeper module to generate and associate aunique token with the character string. In conjunction, a batchingmodule is executed to send a request for the unique token associated thespecific credit card number and the processor executes the gatekeepermodule to access the token via the credit card number. The processorexecutes the gatekeeper module to return the unique token associatedwith the credit card number to the batching module and the batchingmodule is executed to save the purchase transaction in a database alongwith the token as opposed to the new credit card number.

As in the case of the process for transmitting a character string 100,the processor also executes the gatekeeper module of process 200 toverify whether the computer device or the user requesting the uniquetoken is authorized to receive the token according to variousembodiments of the invention. Thus, the processor executes thegatekeeper module to provide formal access controls in variousembodiments to verify that the device or the user making the request hasprivilege to retrieve the unique token. These formal access controls aresimilar to the controls discussed above in regard to the process fortransmitting a character string 100.

Furthermore, in various embodiments, the processor executes thegatekeeper module to transmit the unique token to the device or the userrequesting the token. Again, it should be understood that the term“transmit” does not necessarily mean the processor executes thegatekeeper module to send the token to the entity. For example, invarious embodiments, the processor may execute the gatekeeper module togrant the device or the user permission to access the token in storage.Thus, the term “transmit” is used in this disclosure to mean that thegatekeeper module facilitates the device or the user obtaining thetoken.

As previously discussed, the device making the request can vary byembodiment. For example, the device may be a server executing a programmodule, a GUI, or an external source such as a credit card companycomputer system. In addition, the processor may execute the gatekeepermodule to transmit the token in various forms. For example, theprocessor may execute the gatekeeper module to simply return the tokenin a digital format such as in a data stream, a file, or an e-mail or todisplay the token on a computer monitor. One of ordinary skill in theart is familiar with the numerous ways information can be returned fromthe storage devices and stored or displayed in light of this disclosure.

System Architecture

System 3 includes a gatekeeper system 300 according to variousembodiments of the invention is shown as FIG. 3. As may be understoodfrom this figure, in various embodiments, the system includes inaddition to the gatekeeper system 300, a database server 105, and one ormore application servers 100-103 that are connected via a network 104(e.g., a LAN, a wireless network, the Internet, and/or a privatenetwork) to communicate with one another. In one embodiment of theinvention, the gatekeeper system 300 is configured for retrieving datafrom, and storing data to, a database located on the database server 105(or, alternatively, located on the gatekeeper system 300). Inalternative embodiments, the system 3 may include more than onedatabase. In other embodiments, the gatekeeper system 300 may be one ormore computers or software programs running on one or more computers.

FIG. 4 shows a schematic diagram of a gatekeeper system 300 storing thegatekeeper module 400 according to one embodiment of the invention. Thesystem 300 includes a processor 60 that communicates with other elementswithin the server via a system interface or bus 61. Also included in thesystem 300 is a display device/input device 64 for receiving anddisplaying data. This display device/input device 64 may be, forexample, a keyboard or pointing device that is used in combination witha monitor. The system 300 further includes memory, which includes bothread only memory (ROM) 65 and random access memory (RAM) 67. Thesystem's ROM 65 is used to store a basic input/output system 26 (BIOS),containing the basic routines that help to transfer information betweenelements within the system 300. Alternatively, the system 300 canoperate on one computer or on multiple computers that are networkedtogether.

In addition, the system 300 includes at least one storage device 63,such as a hard disk drive, a floppy disk drive, a CD ROM drive, a DVDROM drive, a USB flash drive, or optical disk drive, for storinginformation on various computer-readable media, such as a hard disk, aremovable magnetic disk, a CD-ROM disk, or a DVD-ROM disk. As will beappreciated by one of ordinary skill in the art, each of these storagedevices 63 is connected to the system bus 61 by an appropriateinterface. The storage devices 63 and their associated computer-readablemedia provide nonvolatile storage for a personal computer. It isimportant to note that the computer-readable media described above couldbe replaced by any other type of computer-readable media known in theart. Such media include, for example, magnetic cassettes, flash memorycards, memory sticks, digital video disks, and Bernoulli cartridges.

A number of program modules may be stored by the various storage devicesand within RAM 67. For example, as shown in FIG. 4, program modules ofthe system 300 include an operating system 80 and a gatekeeper module400. The gatekeeper module 400 controls certain aspects of the operationof the system 300, as is described in more detail below, with theassistance of the processor 60 and an operating system 80.

Also located within the system 300 is a network interface 74, forinterfacing and communicating via a network 104 (e.g., a LAN, a wirelessnetwork, the Internet, or a private network) with other elements of acomputer network, such as application servers 100-103 and a databaseserver 105 as shown in FIG. 3. It will be appreciated by one of ordinaryskill in the art that one or more of the system's components 300 may belocated geographically remotely from other system components.Furthermore, one or more of the components may be combined, andadditional components performing functions described herein may beincluded in the system 300.

Exemplary System Operation

As mentioned above, the system 3 according to various embodimentsenables communication between the gatekeeper system 300, the applicationservers 100-103, and the database server 105. In particular, in variousembodiments, the gatekeeper system 300 includes a gatekeeper module 400.The gatekeeper module 400 may be configured to communicate informationbetween one or more application servers 100-103 and a database server105. This module 400 is discussed in more detail below.

Gatekeeper Module

FIG. 5 illustrates a flow diagram related to a gatekeeper module 400transmitting a character string according to various embodiments of theinvention. This flow diagram may correspond to the steps carried out bya processor 60 in the system 300 shown in FIG. 4 as it executes thegatekeeper module 300 in the RAM memory 67 of the system 300.

In various embodiments, the processor 60 executes the gatekeeper module400 to initially obtain a character string from an entity such as acomputer device or a user. However, it should be understood that thegatekeeper module 300 is not the only component that may be executed toreceive the character string to store the string in one or more storagedevices. For example, when the “checkout” webpage previously discussedreceives a new credit card number from a user, the webpage may call adedicated module that is executed besides the gatekeeper module 400 tosave the credit card number to the database. One of ordinary skill inthe art can envision numerous ways to set up a system to save newcharacter strings to the database in light of this disclosure.

In addition, the entity from which the character string is obtained maybe a GUI, a program module running on a computer system, or othercomponent such as a third-party computer system according to variousembodiments of the invention. The term “obtain” is used to mean receiveor access. This can be accomplished either locally or remotely and maybe via a communications network (e.g., a LAN, a wireless network, theInternet, or a private network).

Accordingly, the processor 60 executes the gatekeeper module 400 tostore the character string in storage if the module 400 does receive thecharacter string, shown as Step 502. In various embodiments, theprocessor 60 executes the gatekeeper module 400 to store the characterstring in a database. However, it should be understood by those ofordinary skill in the art that the gatekeeper module 400 does notnecessarily need to store the character string in a database. Forexample, in various embodiments, the processor 60 may execute thegatekeeper module 400 to store the character string in a file, datawarehouse, or some type of program module.

In addition, various types of storage devices may be used according tovarious embodiments of the invention. For instance, the storage devicesmay be internal or external hard drives, storage disks, magnetic tapes,USB flash drives, or some other type of storage device as known by thoseof ordinary skill in the art.

In many cases the character string represents sensitive information, andtherefore, the processor 60 executes the gatekeeper module 400 toencrypt the character string (shown as Step 501) and to store the stringas encrypted data according to various embodiments. For example, thecharacter string may be a customer credit card number that is receivedby a merchant or service provider from a customer purchasing a productor service using a credit card.

In various embodiments, the processor 60 executes the gatekeeper module400 to perform the encryption process or executes a different module toperform the encryption of the information if the information does needto be encrypted. Thus, the gatekeeper module 400 or other module mayemploy various techniques to encrypt the credit card number andinformation, such as asymmetric-key encryption.

In addition, the processor 60 executes the gatekeeper module 300 ofvarious embodiments to obtain additional information to store in thedatabase that is related to the credit card number. Such information mayinclude credit card expiration date, credit card type, status of thecredit card (e.g., active), parent system, and profile flag.

Lastly, the processor 60 may execute the gatekeeper module 400 to storethe character string in a centralized repository according to variousembodiments of the invention. Such a repository may be important in thecontext of storing sensitive information such as credit card numbers, aspreviously discussed. For example, the processor 60 can execute thegatekeeper module 400 or other computer modules to take correctivemeasures more quickly in the case of a security breach because theprocessor only needs to implement the measures on a centralizedrepository. In addition, the processor 60 can execute the gatekeepermodule 400 or other computer modules to implement protective andcorrective measures more easily since the character strings andcorresponding information are stored in a centralized repository. As aresult, the quality of protection is raised.

In various embodiments, the processor 60 executes the gatekeeper module400 to associate a unique token to the character string in addition tostoring the character string in the database, shown as Step 503. Thusreturning to the example, the processor 60 executes the gatekeepermodule 400 to store the encrypted credit card number in the database andalso to create and to assign a unique token to the encrypted credit cardnumber. Again, it should be apparent to one of ordinary skill in the artthat in other embodiments other computer modules, besides the gatekeepermodule 400, may perform this task in light of this disclosure.Preferably, the module that is facilitating the saving of the characterstring to storage also associates the unique token to the string.

The processor 60 may execute the gatekeeper module 400 (or other module)to create the unique token using various procedures. For example, invarious embodiments, the processor 60 executes the gatekeeper module 400to create the unique token by calling a random number generator module.Random number generator modules typically include an algorithm that canautomatically create long runs, e.g., millions of numbers long, withgood random properties, however in many cases, the sequence created bythe algorithm will eventually repeat. Therefore, once the random numbergenerator module has provided a random number, the processor 60 executesthe gatekeeper module 400 to check the provided number against theexisting tokens to ensure the acquired random number is unique. Theprocessor 60 executes the gatekeeper module 400 to assign the randomnumber to the encrypted credit card number if the random number isunique. The processor 60 executes the gatekeeper module 400 to discardthe random number and re-calls the random number generator module if therandom number is not unique.

Another procedure the gatekeeper module 400 may use in variousembodiments to provide unique tokens is to employ database primary keysused to distinguish records in the table of a database. As previouslydiscussed, many commercial database applications include a feature thatwill allow a field to be defined for a table so that a unique primarykey is automatically generated and written into the field for a newrecord stored in the table. Thus, in the example, when the processor 60executes the gatekeeper module 400 to store the encrypted credit cardnumber in a table of a database, the database automatically generates aunique primary key and stores the key in the designated field. Theprocessor 60 then executes the gatekeeper module 400 to use this primarykey as the unique token associated with the credit card number.

In various embodiments, the processor 60 executes the gatekeeper module400 to store the unique token in the same storage as the characterstring. In other embodiments, the processor 60 executes the gatekeepermodule 400 to store the unique token in separate storage. Thus, in theexample, the processor 60 executes the gatekeeper module 400 to storethe unique token in the same database as the encrypted credit cardnumber or in a separate database.

In addition, in various embodiments, the processor 60 executes thegatekeeper module 400 to associate a sub-string of the character stringwith the token in order to identify that the token is associated withthe character string without revealing the character string, shown asStep 504. In various embodiments, the processor 60 executes thegatekeeper module 400 to store this sub-string along with itscorresponding token. In other embodiments, the processor 60 executes thegatekeeper module 400 to store the sub-string and token in separatestorage. Thus, there is nothing identifiable in the token to link thetoken to the corresponding character string directly. Instead, the tokenuses a formal protected cross reference to link to the character string.An example of such a sub-string is the last four digits of a credit cardnumber.

The use of such a sub-string provides a significant advantage overprevious systems. This is because for a previous system to show a userwhat credit card numbers are stored in the database, the previous systemis required to query the database to obtain the credit card numbers,encrypt the credit card numbers if the credit card numbers weredecrypted in order to be queried from the database, send the encryptedcredit card numbers to a display, such as a webpage, and decrypt thecredit card numbers in order to display the numbers to the user. Thiscomplex system is required to ensure the security of the informationfrom such threats as hackers, as well as, be in compliance with the PCIDSS guidelines.

However, in a system 300 that facilitates displaying the stored creditcard numbers using a sub-string in conjunction with a token, instead ofthe actual credit card numbers, the user can view what credit cardnumbers are stored in the database for him or her without the system 300actually having to access and transmit the credit card numbers to thedisplay. Therefore, the credit card numbers stay encrypted and securedin the database. As a result, encryption and decryption activities areminimized and the flow of sensitive information is reduced.

In Step 505, the processor 60 executes the gatekeeper module 400 toreceive a request for the character string, and in response, theprocessor 60 executes the gatekeeper module 400 to access the stringfrom storage using the unique token associated with the character stringaccording to various embodiments (shown as Step 507). The request can bemade at various times and from various entities.

For example, a user may select a particular credit card displayed on the“checkout” webpage to which to charge a purchase and may complete thetransaction by selecting the “buy now” button on the page. As previouslydiscussed, a batching module is executed to save the purchase to adatabase so that the module can later batch the purchase with otherpurchases made and submitted the purchases to the credit card companyfor payment. In addition, the batching module is also executed to submita request to the gatekeeper module 400 for the unique token associatedwith the credit card number selected by the user to save the token alongwith the purchase in the database. This provides an advantage overprevious systems because by system modules using the unique tokeninstead of the actual credit card number, the credit card number is notexposed to needless risk and the system is not required to perform thecomplex processing of encrypting and decrypting the credit cardinformation to facilitate the transaction.

In addition, the processor 60 may also execute the gatekeeper module 400to verify whether the entity requesting the character string isauthorized to receive the character string according to variousembodiments of the invention, shown as Step 506. Thus, the gatekeepermodule 400 is provided with formal access controls in variousembodiments. For example, the gatekeeper module 400 may comprise anapplication programming interface (API) executed by a computer toregulate the interaction between independent entities such as computerdevices and individuals and the database. Specifically, a device or auser that makes a request to access a character string must firstregister with the gatekeeper module 400. Such formal controls provide amechanism to control who and what can access the credit card numbers inthe database.

In various embodiments, the device or the user will subscribe with thegatekeeper module 400 to gain access to the information stored in thedatabase. As a result, various devices and users may be given variouslevels of access. For example, the batching module, as previouslydiscussed, will subscribe with the gatekeeper module 400 to be able tosubmit credit card number requests to the gatekeeper module 400. Anothermodule, that records and reports a user's transaction history, may onlyneed to retrieve the sub-strings associated with the tokens to display auser's transaction history, and therefore, this module's subscriptiononly provides access to the sub-strings. In addition, the gatekeepermodule 400 may provide various other subscription levels, such asprivileges to access tokens only.

Thus, a device or a user will need to provide a token, a sub-string, orsome other information and sufficient credentials to the gatekeepermodule 400 for the device or the user to gain access to the informationin the database. The processor 60 will execute the gatekeeper module 400to check the device's or the user's credentials to determine if thedevice or the user is allowed to perform the type of access ormanipulation of the information the device or the user wants to perform.In various embodiments, the credentials may take many forms. Forexample, the processor 60 executes the gatekeeper module 400 to providea key upon registration to the subscribing device or the subscribinguser so that the device or the user may send the key as credentialsalong with a request. In other embodiments, the processor 60 executesthe gatekeeper module 400 to simply check the name of the device or theuser against a record in a database table when the module 400 receivesthe request to determine whether the device or the user has theprivilege to perform the request. One of ordinary skill in the art canthink of numerous ways of adapting the gatekeeper module 400 to provideand check credentials for a device or a user to establish the device'sor the user's level of access to the information in light of thisdisclosure.

In addition, the processor 60 also executes the gatekeeper module 400 ofvarious embodiments to monitor the retention of the character stringsand associated information stored in the database, shown as Step 509.Therefore, the processor 60 can execute the gatekeeper module 400 todetermine whether any of the sensitive information stored in thedatabase is out-dated and should be deleted or archived from thedatabase. As a result, this will minimize the amount of sensitiveinformation stored in the database and also minimize the liability ofstoring such information.

Thus, the processor 60 executes the gatekeeper module 400 toperiodically check to determine whether any of the credit card numbershave expired or whether any of the credit card numbers have not beenused within a set period of time, e.g., whether a certain period of timehas elapsed since the credit card number was last used to make apurchase. Therefore, the processor 60 executes the gatekeeper module 400to delete a credit card number along with any corresponding informationfrom the database if the credit card number has expired or has not beenused within the set period of time, shown as Step 510. In variousembodiments, the processor 60 may also execute the gatekeeper module 400to archive the credit card number and corresponding information first toan external storage medium, such as a disk or tap drive, before deletingthe number and corresponding information from the database, shown asStep 511.

The processor 60 can execute the gatekeeper module 400 to monitor thecharacter strings through various techniques. In one embodiment, theprocessor 60 executes the gatekeeper module 400 to check each record inthe database at a certain time each day to determine if any credit cardnumbers need to be purged from the database, shown as Step 508. Forexample, the processor 60 executes a scheduling feature of thegatekeeper module 400 to run every morning at three o'clock a.m. andfilters out any records that need to be purged from the database. Inanother embodiment, the processor 60 executes the gatekeeper module 400to simply monitor each credit card number stored for a user in responseto receiving a request for a particular credit card number associatedwith the user to determine if any of the user's stored credit cardnumbers are out of date. In other embodiments, the gatekeeper module 400does not monitor information retention at all and this task is preformedby another module. One of ordinary skill in the art can envision severaltechniques in light of this disclosure that may be employed to ensurethe character strings and corresponding information is purged if theinformation has expired.

At Step 513, the processor 60 executes the gatekeeper module 400 totransmit the character string to the device or the user requesting thecharacter string according to various embodiments of the invention. Aspreviously discussed, the device or the user making the request canvary. For example, the device or the user may be a program moduleexecuted on a computer, a GUI, or an external source such as a creditcard company computer system. In addition, the processor 60 can executethe gatekeeper module 400 to provide the character string in variousforms. In various embodiments, the processor 60 executes the gatekeepermodule 400 to return the character string in a digital format such as ina data stream, a file, or an e-mail or to display the string on acomputer monitor. In addition, the processor 60 may need to execute thegatekeeper module 400 to first decrypt the character string (shown asStep 512) to provide the string, such as in a standard text format. Oneof ordinary skill in the art is familiar with the numerous ways theprocessor 60 can execute the gatekeeper module 400 to transmit thecharacter string to the device or the user requesting the string inlight of this disclosure.

In many instances, the processor 60 also executes the gatekeeper module400 to receive requests from devices and users to access a unique tokenassociated with a character string. FIG. 6 illustrates a flow diagramrelated to a gatekeeper module 400 executed by a computer to transmit aunique token associated with a character string according to variousembodiments of the invention. This flow diagram may correspond to thesteps carried out by a processor 60 in the system 300 shown in FIG. 4 asit executes the gatekeeper module 400 in the RAM memory 67 of the system300.

As previously discussed, in various embodiments, the processor 60 mayexecute the gatekeeper module 400 to initially obtain a character stringfrom a device or a user. For example, the processor 60 may execute thegatekeeper module 400 to obtain the character string from variousentities such as a GUI, a program module executing on a computer system,or other component such as a third-party computer system. However, itshould be understood that the gatekeeper module 400 is not the onlycomponent that may receive the character string in order to store thestring in storage.

Accordingly, if the gatekeeper module 400 does receive the characterstring, the processor 60 executes the gatekeeper module 400 to store thecharacter string in storage in the same manner as previously discussed,shown as Step 602. Thus, in various embodiments, the processor 60executes the gatekeeper module 400 to store the character string in adatabase, though in other embodiments, the processor 60 executes thegatekeeper module 400 to store the string in a file, data warehouse, orsome type of program module. In addition, various types of storagedevices may be used according to various embodiments of the invention.For instance, the storage devices may be internal or external harddrives, storage disks, magnetic tapes, USB flash drives, or some othertype of storage devices.

In many cases the character string represents sensitive information, andtherefore, the processor 60 will execute the gatekeeper module 400 toencrypt the string (shown as Step 601) or will execute a differentmodule to encrypt the string prior to storing the string. In addition,the processor 60 may execute the gatekeeper module 400 of variousembodiments to also obtain additional information to store in thedatabase that is related to the character string.

Lastly, the processor 60 may execute the gatekeeper module 400 to storethe character string in a centralized repository according to variousembodiments of the invention. As previously discussed, such a repositorymay be important in the context of storing sensitive information such ascredit card numbers.

In various embodiments, the processor 60 executes the gatekeeper module400 to associate a unique token to the character string, as shown inStep 603. The processor 60 executes the gatekeeper module 400 toassociate the unique token with the character string in the same manneras previously discussed above. Thus, in regard to the credit cardexample, the processor 60 executes the gatekeeper module 400 to createand to assign a unique token to the encrypted credit card number. Thegatekeeper module 400 may create the unique token using variousprocedures. For example, in various embodiments, the processor 60executes the gatekeeper module 400 to create the unique token by callinga random number generator module or by employing database primary keysused to distinguish records in the table of a database.

In various embodiments, the processor 60 executes the gatekeeper module400 to store the unique token in the same storage as the characterstring. In other embodiments, the processor 60 executes the gatekeepermodule 400 to store the unique token in separate storage. Thus, in thecredit card example, the processor 60 may execute the gatekeeper module400 to store the unique token in the same database as the encryptedcredit card number or in a separate database.

In addition, as previously discussed, the processor 60 executes thegatekeeper module 400 to associate a sub-string of the character stringassociated with the token to identify that the token is associated withthe character string without revealing the character string according tovarious embodiments of the invention, shown as Step 604. The use of sucha sub-string provides a significant advantage over previous systemsbecause it allows a user to operate a computing device to view whatcharacter strings are stored in storage without the gatekeeper module400 (and/or other computer module) having to access, transmit, anddisplay the actual character string to the user. In various embodiments,the processor 60 executes the gatekeeper module 400 to store thesub-string along with its corresponding token. In other embodiments, theprocessor 60 executes the gatekeeper module 400 to store the sub-stringand token in separate storage (e.g., databases).

In Step 605, the processor 60 executes the gatekeeper module 400 toreceive a request for the unique token, and in response, the processor60 executes the gatekeeper module 400 to access the token from storageusing the character string associated with the token according tovarious embodiments (shown as Step 606). The request can be made atvarious times and from various entities.

For example, a user visits a retailer's web site and selects one or moreproducts to purchase. The user is sent by the retailer's web site to a“checkout” webpage to complete the purchase. Once on the “checkout”webpage, the user enters a new credit card number along with informationon the “checkout” webpage to which to charge the purchase instead ofusing a credit card number previously stored. Since this is a new creditcard number, the processor 60 executes the gatekeeper module 400 toobtain the credit card number and related information, to encrypt thecard number and information, and to save the number and information tothe database. In addition, the processor 60 executes the gatekeepermodule 400 to generate and to associate a unique token with the new cardnumber.

As previously discussed, a batching module may also be executed toreceive the purchase transaction, and in conjunction to saving thepurchase to a database, to send a request to the gatekeeper module 400for the unique token associated with the new credit card number. Therequest includes the new credit card number. As a result, the processor60 executes the gatekeeper module 400 to access the token by using thecredit card number provided in the request and to transmit the tokenback to the batching module. Once the batching module retrieves theunique token associated with the new credit card number, the batchingmodule is executed to save the purchase transaction to a database alongwith the token as opposed to the new credit card number.

The processor 60 may also execute the gatekeeper module 400 to verifywhether the device or the user requesting the unique token (e.g., thebatching module) is authorized to receive the token according to variousembodiments of the invention, shown as Step 606. Thus, in order for adevice or a user to gain access to the token, the device or the userwill need to provide the character string and sufficient credentials tothe gatekeeper module 400 and the processor 60 will execute the module400 to check whether the device or the user is authorized to access theunique token.

As previously mentioned the processor 60 executes the gatekeeper module400 of various embodiments to monitor the retention of the characterstrings and associated information stored in the database, shown as Step609. Thus, the processor 60 will execute the gatekeeper module 400 toperiodically check to determine whether any of the credit card numbershave expired or whether any of the credit card numbers have not beenused within a set period of time, e.g., whether a certain period of timehas elapsed since the credit card number was last used to make apurchase. Therefore, the processor 60 will execute the gatekeeper module400 to delete a credit card number along with any correspondinginformation from the database if the credit card number has expired orhas not been used within the set period of time, shown as Step 610. Invarious embodiments, the processor 60 may also execute the gatekeepermodule 400 to archive the credit card number and correspondinginformation first to an external storage medium, such as a disk or tapdrive, before deleting the number and corresponding information from thedatabase, shown as Step 611.

The processor 60 can execute the gatekeeper module 400 to monitor thecharacter strings through various techniques. In one embodiment, theprocessor 60 executes a scheduling feature of the gatekeeper module 400to check each record in the database at a certain time each day todetermine if any credit card numbers need to be purged from thedatabase, shown as Step 608. In another embodiment, the processor 60executes the gatekeeper module 400 to simply monitor each credit cardnumber stored for a user in response to receiving a request for aparticular token associated with the user to determine if any of theuser's stored credit card numbers are out of date. In other embodiments,the processor 60 does not execute the gatekeeper module 400 to monitorinformation retention at all and this task is preformed by anotherexecuted module.

At Step 612, the processor 60 executes the gatekeeper module 400 totransmit the unique token to the device or the user requesting the tokenaccording to various embodiments of the invention. As previouslydiscussed, the device or the user making the request can vary. Forexample, the device may be a program module executing on a computersystem, a GUI, or an external source such as a credit card companycomputer system. In addition, the processor 60 can execute thegatekeeper module 400 to provide the token in various forms. In variousembodiments, the processor 60 executes the gatekeeper module 400 toreturn the token in a digital format such as in a data stream, a file,or an e-mail or to display the token on a computer monitor. One ofordinary skill in the art is familiar with the numerous ways thegatekeeper module 400 can provide the token to the device or the userrequesting the token in light of this disclosure.

Many modifications and other embodiments of the inventions set forthherein will come to mind to one skilled in the art to which theseinventions pertain having the benefit of the teachings presented in theforegoing descriptions and the associated drawings. Therefore, it is tobe understood that the inventions are not to be limited to the specificembodiments disclosed and that modifications and other embodiments areintended to be included within the scope of the appended claims.Although specific terms are employed herein, they are used in a genericand descriptive sense only and not for purposes of limitation.

1-28. (canceled)
 29. A method for conducting an online transaction on awebsite involving sensitive information, the method comprising:associating a plurality of unique tokens with corresponding sub-stringsof a plurality of character strings associated with a user, whereindirect links do not exist between the plurality of unique tokens and theplurality of character strings, the plurality of character stringscomprising the sensitive information and the sub-strings beingconfigured to identify the character strings without revealing thecharacter strings; after a particular sub-string of the plurality ofsub-strings is selected to facilitate the online transaction: saving arecord for the online transaction comprising information for the onlinetransaction and the unique token corresponding to the particularsub-string; using the unique token corresponding to the particularsub-string for intermediate steps during processing of the onlinetransaction; and retrieving a character string corresponding to theparticular sub-string, from a storage memory using the unique tokencorresponding to the particular sub-string and the particular sub-stringto complete the online transaction using the saved record.
 30. Themethod of claim 29, wherein the online transaction is a purchase on thewebsite and the character strings are credit card numbers.
 31. Themethod of claim 30, wherein the each of the plurality of sub-stringscomprises a last four digits of the credit card number.
 32. The methodof claim 29, wherein each of the plurality of character strings isstored as encrypted data.
 33. The method of claim 29, wherein each ofthe plurality of character strings is stored as a record in a databasewithin the storage memory.
 34. The method of claim 29, furthercomprising: verifying that a computer device or a user retrieving thesensitive information is authorized to access the character stringcorresponding to the particular sub-string.
 35. The method of claim 29,further comprising: receiving a request to display the particularsub-string of the plurality of sub-strings, the request comprising theunique token corresponding to the particular sub-string; and displayingthe particular sub-string without revealing the sensitive information.36. The method of claim 29, further comprising: using the unique tokencorresponding to the particular sub-string to access and retrieve theparticular sub-string without accessing the character stringcorresponding to the particular sub-string.
 37. A data processing systemfor conducting an online transaction on a website involving sensitiveinformation, the data processing system comprising a processor and oneor more storage devices embodying computer-readable program instructionsthat, when executed by the processor, cause the data processing systemto: associate a plurality of unique tokens with correspondingsub-strings of a plurality of character strings associated with a user,wherein direct links do not exist between the plurality of unique tokensand the plurality of character strings, the plurality of characterstrings comprising the sensitive information and the sub-strings beingconfigured to identify the character strings without revealing thecharacter strings; after a particular sub-string of the plurality ofsub-strings is selected to facilitate the online transaction: save arecord for the online transaction comprising information for the onlinetransaction and the unique token corresponding to the particularsub-string; use the unique token corresponding to the particularsub-string for intermediate steps during processing of the onlinetransaction; and retrieve a character string corresponding to theparticular sub-string from a storage memory using the unique tokencorresponding to the particular sub-string and the particular sub-stringto complete the online transaction using the saved record.
 38. The dataprocessing system of claim 37, wherein the online transaction is apurchase on the website and the character strings are credit cardnumbers.
 39. The data processing system of claim 38, wherein each of theplurality of sub-strings comprises a last four digits of the credit cardnumber.
 40. The data processing system of claim 37, wherein each of theplurality of character strings is stored as encrypted data.
 41. The dataprocessing system of claim 37, wherein each of the plurality ofcharacter strings is stored as a record in a database within the storagememory.
 42. The data processing system of claim 37, wherein thecomputer-readable program instructions, when executed by the processor,further cause the data processing system to: verify that a computerdevice or a user retrieving the sensitive information is authorized toaccess the character string corresponding to the particular sub-string.43. The data processing system of claim 37, wherein thecomputer-readable program instructions, when executed by the processor,further cause the data processing system to: receive a request todisplay the particular sub-string of the plurality of sub-strings, therequest comprising the unique token corresponding to the particularsub-string; and display the particular sub-string without revealing thesensitive information.
 44. The data processing system of claim 37,wherein the computer-readable program instructions, when executed by theprocessor, further cause the data processing system to: use the uniquetoken corresponding to the particular sub-string to access and retrievethe particular sub-string without accessing the character stringcorresponding to the particular sub-string.
 45. A computer programproduct for conducting an online transaction on a website involvingsensitive information, the computer program product comprising acomputer-readable storage embodying computer-readable programinstructions that, when executed, cause a processor to: associate aplurality of unique tokens with corresponding sub-strings, of aplurality of character strings associated with a user, wherein directlinks do not exist between the plurality of unique tokens and theplurality of character strings, the plurality of character stringscomprising the sensitive information and the sub-strings beingconfigured to identify the character strings without revealing thecharacter strings; after a particular sub-string of the plurality ofsub-strings is selected to facilitate the online transaction: save arecord for the online transaction comprising information for the onlinetransaction and the unique token corresponding to the particularsub-string; use the unique token corresponding to the particularsub-string for intermediate steps during processing of the onlinetransaction; and retrieve a character string corresponding to theparticular sub-string from a storage memory using the unique tokencorresponding to the particular sub-string and the particular sub-stringto complete the online transaction using the saved record.
 46. Thecomputer program product of claim 45, wherein the online transaction isa purchase on the website and the character strings are credit cardnumbers.
 47. The computer program product of claim 46, wherein each ofthe plurality of sub-strings comprises a last four digits of the creditcard number.
 48. The computer program product of claim 45, wherein eachof the plurality of character strings is stored as encrypted data. 49.The computer program product of claim 45, wherein each of the pluralityof character strings is stored as a record in a database within thestorage memory.
 50. The computer program product of claim 45, whereinthe computer-readable program instructions, when executed by aprocessor, further cause the processor to: verify that a computer deviceor a user retrieving the sensitive information is authorized to accessthe character string corresponding to the particular sub-string.
 51. Thecomputer program product of claim 45, wherein the computer-readableprogram instructions, when executed, further cause the processor to:receive a request to display the particular sub-string of the pluralityof sub-strings, the request comprising the unique token corresponding tothe particular sub-string; and display the particular sub-string withoutrevealing the sensitive information.
 52. The computer program product ofclaim 45, wherein the computer-readable program instructions, whenexecuted, further cause the processor to: use the unique tokencorresponding to the particular sub-string to access and retrieve theparticular sub-string without accessing the character stringcorresponding to the particular sub-string.
 53. The method of claim 29,wherein each of the plurality of unique tokens comprises a databaseprimary key from a database table.
 54. The data processing system ofclaim 37, wherein each of the plurality of unique tokens comprises adatabase primary key from a database table.
 55. The computer programproduct of claim 45, wherein each of the plurality of unique tokenscomprises a database primary key from a database table.